#include <iostream>
#include <string>
#include <unistd.h>

using namespace std;

class Furniture {
private:
    int weight;

public:
    Furniture() {
        cout << "Furniture" << endl;
    }

    void setWeight(int weight) {
        this->weight = weight;
    }

    int getWeight() const {
        return weight;
    }
};

class Vertification3C {
public:
    Vertification3C() {
        cout << "Vertification3C" << endl;
    }
};

class Sofa : virtual public Furniture, virtual public Vertification3C {
public:
    Sofa() {
        cout << "Sofa" << endl;
    }
    void watchTV(void) {
        cout << "watch TV" << endl;
    }
};

class Bed : virtual public Furniture, virtual public Vertification3C {
public:
    Bed() {
        cout << "Bed" << endl;
    }
    void sleep(void) {
        cout << "sleep" << endl;
    }
};

class SofaBed : public Sofa, public Bed {
public:
    SofaBed() {
        cout << "SofaBed" << endl;
    }

    SofaBed(char *abc) {
        cout << "SofaBed(char *abc): " << abc << endl;
    }
};

class LeftRighCom {
public:
    LeftRighCom() {
        cout << "LeftRighCom" << endl;
    }

    LeftRighCom(char *abc) {
        cout << "LeftRighCom(char *abc): " << abc << endl;
    }
};

class Date {
public:
    Date() {
        cout << "Date" << endl;
    }

    Date(char *abc) {
        cout << "Date(char *abc): " << abc << endl;
    }
};

class Type {
public:
    Type() {
        cout << "Type" << endl;
    }

    Type(char *abc) {
        cout << "Type(char *abc): " << abc << endl;
    }
};

class LeftRighSofabed : public SofaBed, public LeftRighCom {
private:
    Date date;
    Type type;
public:
    LeftRighSofabed() {
        cout << "LeftRighSofabed" << endl;
    }

    LeftRighSofabed(char *str1, char *str2, char *str3) : SofaBed(str1), LeftRighCom(str2), date(str3) {
        cout << "LeftRighSofabed(char *abc): " << str1 << endl;
        cout << "LeftRighSofabed(char *abc): " << str2 << endl;
        cout << "LeftRighSofabed(char *abc): " << str3 << endl;
    }
};

int main() {
//    SofaBed s;
//    s.watchTV();
//    s.sleep();
//
//    s.setWeight(100);
//    cout << s.getWeight() << endl;

    LeftRighSofabed lrsb("111111", "222222", "333333");

    return 0;
}
